package _untouchable_;

/**
 * Die Klasse {@link Config} ist ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
 * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
 * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
 * <br />
 * Diese Klasse unterst&uuml;tzt das interne Verteilen von Informationen wie z.B. Testparameter.<br />
 * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.
 */
class Config {
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #freeze} sch&uuml;tzt die internen Variable vor nachfolgenden Ver&auml;nderungen sobald es gesetzt wird.
     */
    private static volatile boolean freeze = false;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #freezeNow()} setzt {@link #freeze} auf <code>true</code>
     * und verhindert so weitere &Auml;nderungen der mittels {@link #freeze} gesch&uuml;tzten internen Variablen.
     */
    public static void freezeNow(){ freeze = true; }
    
    
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #phase} markiert eine interne Phase bei der Ararbeitung des Test (sofern Sie sich wie geplant verhalten).
     */
    private static volatile int phase = 0;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #phase}.
     */
    public static int getPhase(){ return phase; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #switch2NextPhase()} schaltet in die n&auml;chste Test-Phase (sofern Sie sich wie geplant verhalten).
     */
    public static void switch2NextPhase(){
        if ( phase >= 4 ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            phase++;  // dirty! - but here ok ;-)
        }//if
    }//switch2NextPhase
    
    
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #unit} gibt die kleinste &quot;Zeiteinheit&quot; vor (sofern Sie sich wie geplant verhalten)
     */
    private static volatile int unit = 10;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #unit}.
     */
    public static int getUnit(){ return unit; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Setter f&uuml;r {@link #unit}.<br />
     * @param value ist der Wert, den der Setter f&uuml;r {@link #unit} setzt.
     */
    public static void setUnit( int value ){
        if ( freeze ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            unit = value;
        }//if
    }//setUnit
    
    
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #numberOfLandings} gibt die Anzahl der Anlegestellen vor (sofern Sie sich wie geplant verhalten).
     */
    private static volatile int numberOfLandings = Integer.MIN_VALUE;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #numberOfLandings}.
     */
    public static int getNumberOfLandings(){ return numberOfLandings; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Setter f&uuml;r {@link #numberOfLandings}.<br />
     * @param value ist der Wert, den der Setter f&uuml;r {@link #numberOfLandings} setzt.
     */
    public static void setNumberOfLandings( int value ){
        if ( freeze ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.printf( "Most probably you played with Config.numberOfLandings\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            numberOfLandings = value;
        }//if
    }//setNumberOfLandings
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #numberOfShips} gibt die Anzahl der Anlegestellen vor (sofern Sie sich wie geplant verhalten).
     */
    private static volatile int numberOfShips = Integer.MIN_VALUE;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #numberOfShips}.<br />
     */
    public static int getNumberOfShips(){ return numberOfShips; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Setter f&uuml;r {@link #numberOfShips}.<br />
     * @param value ist der Wert, den der Setter f&uuml;r {@link #numberOfShips} setzt.
     */
    public static void setNumberOfShips( int value ){
        if ( freeze ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.printf( "Most probably you played with Config.numberOfShips\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            numberOfShips = value;
        }//if
    }//setNumberOfShips
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #numberOfSmurfs} gibt die Anzahl der Schl&uuml;mpfe vor (sofern Sie sich wie geplant verhalten).
     */
    private static volatile int numberOfSmurfs = Integer.MIN_VALUE;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #numberOfSmurfs}.
     */
    public static int getNumberOfSmurfs(){ return numberOfSmurfs; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Setter f&uuml;r {@link #numberOfSmurfs}.<br />
     * @param value ist der Wert, den der Setter f&uuml;r {@link #numberOfSmurfs} setzt.
     */
    public static void setNumberOfSmurfs( int value ){
        if ( freeze ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.printf( "Most probably you played with Config.numberOfSmurfs\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            numberOfSmurfs = value;
        }//if
    }//setNumberOfSmurfs
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #numberOfStops} gibt die Anzahl der Schl&uuml;mpfe vor (sofern Sie sich wie geplant verhalten).
     */
    private static volatile int numberOfStops = Integer.MIN_VALUE;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #numberOfStops}.
     */
    public static int getNumberOfStops(){ return numberOfStops; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Setter f&uuml;r {@link #numberOfStops}.<br />
     * @param value ist der Wert, den der Setter f&uuml;r {@link #numberOfStops} setzt.
     */
    public static void setNumberOfStops( int value ){
        if ( freeze ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.printf( "Most probably you played with Config.numberOfStops\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            numberOfStops = value;
        }//if
    }//setNumberOfStops
    
    
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #minDuration} ist ein internes Attribute, dass eine &quot;minimale Zeit&quot; bestimmt.
     */
    private static volatile int minDuration = Integer.MIN_VALUE;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #minDuration}.<br />
     */
    public static int getMinDuration(){ return minDuration; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Setter f&uuml;r {@link #minDuration}.<br />
     * @param value ist der Wert, den der Setter f&uuml;r {@link #minDuration} setzt.
     */
    public static void setMinDuration( int value ){
        if ( freeze ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.printf( "Most probably you played with Config.minDuration\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            minDuration = value;
        }//if
    }//setMinDuration
    
    
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * {@link #maxDuration} ist ein internes Attribute, dass eine &quot;maximale Zeit&quot; bestimmt.
     */
    private static volatile int maxDuration = Integer.MIN_VALUE;
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Getter f&uuml;r {@link #maxDuration}.<br />
     */
    public static int getMaxDuration(){ return maxDuration; }
    /**
     * Die Klasse {@link Config} sowie ihre internen Attribute sind ausschlie&szlig;lich f&uuml;r <strong>interne</strong> Zwecke.<br />
     * Ihre Zeit ist knapp - analysieren Sie <strong><u>NICHT</u></strong> diese Klasse!<br />
     * Nutzen Sie diese Klasse und ihre Attribute <strong><u>NICHT !!!</u></strong><br />
     * Sie sollen sich <strong><u>NICHT</u></strong> mit dieser Klasse besch&auml;ftigen - daher ist sie auch NICHT weiter dokumentiert.<br />
     * <br />
     * Setter f&uuml;r {@link #maxDuration}.<br />
     * @param value ist der Wert, den der Setter f&uuml;r {@link #maxDuration} setzt.
     */
    public static void setMaxDuration( int value ){
        if ( freeze ){
            System.err.printf( "What have you done? - This was NOT expected\n" );
            System.err.printf( "Most probably you played with Config.maxDuration\n" );
            System.err.flush();
            throw new IllegalStateException();
        }else{
            maxDuration = value;
        }//if
    }//setMaxDuration
    
}//Constants
